<?php
require_once(dirname(__FILE__)."/zhifubao/alipay.config.php");
require_once(dirname(__FILE__)."/zhifubao/lib/alipay_core.function.php");
require_once(dirname(__FILE__)."/zhifubao/lib/alipay_rsa.function.php");


class zfb_pay_class
{
	
	// 支付宝统一下单
	function getAppPay_unifiedorder($body , $trade_no , $money , $bkurl)
	{
		if ($GLOBALS['DEBUG_PAY'] == false){
			$zfb_money = "$money" ;
		}else{
			$zfb_money = "0.01" ;
		}
		
		if (is_null($bkurl) || $bkurl == "")  $bkurl = $GLOBALS['ZFB_NOTIFY_URL'] ;
	
		$param = array() ;
		$param["service"]				= "\""."mobile.securitypay.pay"."\"" ;		// 接口名称，固定值。
		$param["partner"]				= "\"".$GLOBALS['ZFB_PARTNER']."\"" ;		// 签约的支付宝账号对应的支付宝唯一用户号。以2088开头的16位纯数字组成
		$param["_input_charset"]		= "\""."utf-8"."\"" ;
		$param["notify_url"]			= "\"".$bkurl."\"" ;						// 服务器异步通知页面路径
		$param["out_trade_no"]			= "\"".$trade_no."\"" ;						// 商户网站唯一订单号
		$param["subject"]				= "\""."JAJAHOME"."\"" ;					// 商品名称
		$param["payment_type"]			= "\""."1"."\"" ;							// 支付类型。默认值为：1（商品购买）。
		$param["seller_id"]				= "\"".$GLOBALS['ZFB_SELLER_ID']."\"" ;		// 卖家支付宝账号
		$param["total_fee"]				= "\""."$zfb_money"."\"" ;					// 该笔订单的资金总额，单位为RMB-Yuan。取值范围为[0.01，100000000.00]，精确到小数点后两位。
		$param["body"]					= "\"".$body."\"" ;							// 对一笔交易的具体描述信息。如果是多种商品，请将商品描述字符串累加传给body
		$param["sign_type"]				= "\""."RSA"."\"" ;

		$signarray = argSort(paraFilter($param)) ;
		
		$qmstr = createLinkstring($signarray) ;
		$param["sign"] = "\"".urlencode(rsaSign($qmstr , dirname(__FILE__)."/zhifubao/key/rsa_private_key.pem")) ."\"" ;
		
		$sendarray = argSort($param) ;
		return createLinkstring($sendarray) ;
	}
}



// TODO 调用接口
// 支付宝充值请求签名参数
function pay_alipay($json , $session)
{
	$ret = array() ;
	$ret['data'] = array() ;
	
	$uid = util_set_GETUID_for_SESSION($session) ;
	if ($uid <= 0)
	{
		$ret['status'] = $GLOBALS["ERR"]["ERR_USER_NOTFIND"] ;
		$ret['message'] = $GLOBALS["MES"]["ERR_USER_NOTFIND"] ;
		return $ret ;
	}
	
	$pay_tradeid = get_jsonValue($json,"order_id") ;		// 我们自己的订单编号
	$one_trade = sql_fetch_one("select * from pay_trade where `trade_no` = '$pay_tradeid' and `user_id` = '$uid'") ;
	
	// 订单不存在
	if (is_null($one_trade) == true || array_key_exists('user_id', $one_trade) == false){
		$ret['status'] = $GLOBALS["ERR"]["ERR_TRADE_INVITE"] ;
		$ret['message'] = $GLOBALS["MES"]["ERR_TRADE_INVITE"] ;
		return $ret ;
	}
	// 订单状态错误
	if (intval($one_trade['trade_state']) != 0 || intval($one_trade['price_state']) != 0)
	{
		$ret['status'] = $GLOBALS["ERR"]["ERR_PAY_STATE"] ;
		$ret['message'] = $GLOBALS["MES"]["ERR_PAY_STATE"] ;
		return $ret ;
	}
	// 价格不能小于0
	if (doubleval($one_trade['price']) < 0){
		$ret['status'] = $GLOBALS["ERR"]["ERR_PAY_ZERO"] ;
		$ret['message'] = $GLOBALS["MES"]["ERR_PAY_ZERO"] ;
		return $ret ;
	}
	// 价格不能为0
	if (doubleval($one_trade['price']) == 0  && doubleval($one_trade['price_modify']) == 0  ){
		$ret['status'] = $GLOBALS["ERR"]["ERR_PAY_ZERO"] ;
		$ret['message'] = $GLOBALS["MES"]["ERR_PAY_ZERO"] ;
		return $ret ;
	}
	
	// 订单价格更改后必须经过审核才允许用户付钱.
	if (doubleval($one_trade['price']) != doubleval($one_trade['price_modify'])){
		if (intval($one_trade['audit_state']) != 1){
			$ret['status'] = $GLOBALS["ERR"]["ERR_PAY_NOAUDIT"] ;
			$ret['message'] = $GLOBALS["MES"]["ERR_PAY_NOAUDIT"] ;
			return $ret ;
		}
	}
	// 支付金额和汇总付款金额检测
	$money = doubleval($one_trade['price_modify']) ;		// 实际需要支付金额
	if ($money > 5000)
	{
		// 可能需要分批支付,每笔5000.
	}
	$body = "JAJAHOME付款 $money 元" ;

    $bkurl = "" ;
    if (intval($one_trade['trade_class']) == 2) {
        $bkurl = $GLOBALS['ZFB_NOTIFY_URL_CROWD'];
    }

	$zfb = new zfb_pay_class() ;
	$update_wx_trade_no = $pay_tradeid."_0_".date("s",time())."_".($money*100) ;
	$ret['data']['order_string'] = $zfb->getAppPay_unifiedorder($body , $update_wx_trade_no , $money , $bkurl) ;
	return $ret ;
}

function pay_alipay_v2($json , $session)
{
	$ret = array() ;
	$ret['data'] = array() ;
	
	$uid = util_set_GETUID_for_SESSION($session) ;
	if ($uid <= 0)
	{
		$ret['status'] = $GLOBALS["ERR"]["ERR_USER_NOTFIND"] ;
		$ret['message'] = $GLOBALS["MES"]["ERR_USER_NOTFIND"] ;
		return $ret ;
	}
	
	$out_trade_no = get_jsonValue($json,"order_id") ;				// 我们自己的订单编号
	$order_price  = doubleval(get_jsonValue($json,"order_price")) ;	// 当前支付的金额
	$pay_count	  = intval(get_jsonValue($json,"pay_count")) ;		// 当前第几次支付（多次支付1开始累加）
	if ($pay_count <= 0)		$pay_count = 1 ;
	
	$ret = pay_trade_state_check($out_trade_no , $uid , $order_price , $pay_count) ;
	if ($ret['status'] != 0){
		return $ret ;
	}
	$one_trade = $ret['trade'] ;
	unset($ret['trade']);


    $bkurl = "" ;
    if (intval($one_trade['trade_class']) == 2) {
        $bkurl = $GLOBALS['ZFB_NOTIFY_URL_CROWD'];
    }

	$zfb = new zfb_pay_class() ;
	$body = "JAJAHOME付款 $order_price 元" ;
	$update_wx_trade_no = $out_trade_no."_".$pay_count."_".date("s",time())."_".($order_price*100) ;
	$result = $zfb->getAppPay_unifiedorder($body , $update_wx_trade_no , $order_price , $bkurl) ;
	
	$ret['data']['order_string'] = 	$result ;
	return $ret ;
}
?>